package 二叉树;
/*二叉树中序排列: 定义一个中量, 再定义两个数据类储存数据,如果数1小于另一个数2,则数1在数2的左边
如果数3大于数2,则数3在数2的右边
 */
public class BinaryTree {
    public static void main(String[] args) {
         BinaryTreeDemo bt = new BinaryTreeDemo();
            bt.add(8);
            bt.add(28);
            bt.add(14);
            bt.add(3);
            bt.add(2);
            bt.add(6);
            bt.add(71);
            bt.print();

    }

}

class BinaryTreeDemo{
    private Node root ;
    public void add(int data){
        if (root == null) {
            root = new Node(data);
        }else{
            root.addNode(data);
        }

    }
    public void print(){
        root.printNode();
    }
    private class Node{
         private int data ;
         private Node left ;
         private Node rigth ;
         public Node(int data){
             this.data = data ;
         }
        public void addNode(int data){
            if(this.data>data){
                if(this.left==null){
                   this.left = new Node(data);
                }else{this.left.addNode(data);}
            }else{
                if(this.rigth==null){
                this.rigth = new Node(data);
                }else{
                    this.rigth.addNode(data);
                }
            }
    }
        public void printNode(){
          if(this.left!=null){
              this.left.printNode();
          }//先让左边先输出
            System.out.print(this.data+"->");
          //输出方法放中间(!!!!)
          if(this.rigth!=null){
              this.rigth.printNode();
          }
    }

}
}
